“Load balancing” is a term that typically refers to the distribution of incoming resource requests (e.g., from web browsers or other client applications) across servers in a server resource pool to avoid overloading any one server. Load balancing attempts to distribute incoming resource requests based on the load at each server to aid in ensuring server availability and, for Internet servers, defending against denial of service attacks.
Conventional load balancing is a static process in which a system administrator manually programs or otherwise configures a hardware device, known as a “load balancer,” to allocate servers for resource request processing based upon preset criteria. The load balancer is typically arranged between the network from which resource requests are received, such as the Internet, and the server resource pool. A system administrator may configure a load balancer to allocate servers for processing incoming resource requests based on a variety of known balancing procedures, such as round robin, weighted (e.g., select one server or set of servers twice as often as another server or set of servers), least loaded (e.g., select the server that is least loaded), or least busy (e.g., select the server that is least busy, even though it may be more heavily loaded than another server). If the current load balancing configuration is not operating efficiently (e.g., based on historical data), the system administrator must access the load balancer and manually change the balancing configuration. As a result, conventional load balancing is static, requiring manual re-configuration from a system administrator any time the balancing needs adjustment.
An exemplary block diagram of a prior art computing system 100 with load balancing is illustrated in FIG. 1. The system 100 includes a static load balancer 101 and a resource pool 103. The resource pool 103 includes a plurality of processing resources, such as web, file transfer, or other servers 105-110 (six shown). The load balancer 101 is arranged between a network 112, such as the Internet or an intranet, and the resource pool 103. The network 112 communicates resource requests to the load balancer 101 from client applications 114, 115 executing in user devices 116, 117 connected to the network 112. Exemplary client applications 114, 115 include web browsers, file transfer protocol (FTP) clients, mobile applications, and scripts running periodically in automated systems.
Prior to being activated into the system 100, the load balancer 101 is manually configured by a system administrator to implement a static load balancing procedure. For example, the load balancer 101 may be configured to allocate servers 105-110 in a round robin manner responsive to incoming requests from client applications 114, 115 over the network 112. If server usage becomes unbalanced over time (e.g., due to certain requests requiring more server resources than others, certain servers being unavailable for periods of time, or certain servers being used more extensively for live testing of new software or software updates), the system administrator may manually re-configure the load balancer 101 so as to attempt to re-balance and/or equalize server usage. For example, the system administrator may change the allocation scheme from round robin to weighted or some other conventional allocation scheme, which is chosen in an attempt to balance server loading. However, system administrators typically adjust load balancer operation only periodically (e.g., once a week or once a month). As a result, manual re-balancing is inefficient and cannot readily adapt to real-time changes in network performance.
Additionally, conventional load balancing requires manual intervention when processing resources are added to the resource pool 103 because the new resources must be added to the balancing scheme configured in the load balancer 101. Such required manual intervention limits horizontal scalability of the load balancing function.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated alone or relative to other elements to help improve the understanding of the various embodiments of the present invention.